home *** CD-ROM | disk | FTP | other *** search
- /*----------------------------------------------------------------------------
-
- cancel.c
-
- This module handles canceling articles.
-
- Copyright © 1994-1995, Northwestern University.
-
- ----------------------------------------------------------------------------*/
-
- #include <stdio.h>
- #include <string.h>
-
- #include "glob.h"
- #include "cancel.h"
- #include "dialog.h"
- #include "header.h"
- #include "strutil.h"
- #include "news.h"
- #include "status.h"
- #include "memutil.h"
- #include "ic.h"
-
-
-
- /*----------------------------------------------------------------------------
- CancelArticle
-
- Cancel an article.
-
- Entry: idStr = message id, C-format.
- groups = handle to list of group names.
- statusMsg = status message, C-format.
-
- Exit: function result = error code.
- ----------------------------------------------------------------------------*/
-
- OSErr CancelArticle (char *idStr, Handle groups, char *cancelMsg)
- {
- Handle msg = nil;
- char cancelStr[263];
- Handle cancelHandle = nil;
- Handle extraNews = nil;
- OSErr err = noErr;
- Boolean postIndeterminate;
-
- MyICReadSharedPrefs(kICNewsHeaders);
-
- sprintf(cancelStr, "cancel %s", idStr);
- err = MyPtrToHand(cancelStr, &cancelHandle, strlen(cancelStr));
- if (err != noErr) goto exit;
- err = MyPtrToHand(gPrefs.extraNewsHdrLines, &extraNews,
- strlen(gPrefs.extraNewsHdrLines));
- if (err != noErr) goto exit;
- err = MakeNewsHeader(groups, cancelHandle, nil, nil, nil, nil, extraNews,
- cancelHandle, nil, &msg);
- if (err != noErr) goto exit;
- MyDisposeHandle(cancelHandle);
- cancelHandle = nil;
- MyDisposeHandle(extraNews);
- extraNews = nil;
- err = MyPtrAndHand(cancelStr, msg, strlen(cancelStr));
- if (err != noErr) goto exit;
-
- /* Post the control message to cancel the article. */
-
- err = PostArticle(msg, cancelMsg, &postIndeterminate);
- if (err != noErr) goto exit;
-
- MyDisposeHandle(msg);
- return noErr;
-
- exit:
-
- MyDisposeHandle(cancelHandle);
- MyDisposeHandle(extraNews);
- MyDisposeHandle(msg);
- return err;
- }
-
-
-
- /*----------------------------------------------------------------------------
- UserIsPoster
-
- Check to see if the user is the poster of an article.
-
- Entry: text = pointer to full article text or article header text.
-
- Exit: function result = true if user is poster.
- ----------------------------------------------------------------------------*/
-
- Boolean UserIsPoster (Handle text)
- {
- char fromStr[514], fromStrAlternate[514], authorStr[514];
- Boolean valid = false;
-
- MyICReadSharedPrefs(kICRealName);
- MyICReadSharedPrefs(kICEmail);
-
- if (*gPrefs.fullName == 0) {
- strcpy(fromStr, gPrefs.emailAddress);
- sprintf(fromStrAlternate, "%s ()", gPrefs.emailAddress);
- } else {
- sprintf(fromStr, "%s (%s)", gPrefs.emailAddress, gPrefs.fullName);
- }
- if (FindHeaderCString(text, "Sender", authorStr, sizeof(authorStr))) {
- valid = MyStrEqual(fromStr, authorStr);
- if (!valid && *gPrefs.fullName == 0)
- valid = MyStrEqual(fromStrAlternate, authorStr);
- }
- if (!valid) {
- if (FindHeaderCString(text, "From", authorStr, sizeof(authorStr))) {
- valid = MyStrEqual(fromStr, authorStr);
- if (!valid && *gPrefs.fullName == 0)
- valid = MyStrEqual(fromStrAlternate, authorStr);
- }
- }
- return valid;
- }
-